package pe.gob.osce.sirenas.wd.jsf.bean.registro;
/*
* Resumen.
* Objeto 				:	BandejaNotificacionBean.java
* Descripcion 			: 	.
* Fecha de Creacion 	: 	26/02/2015.
* Pry de Creacion 		: 	RNA/RNS.
* Autor 				: 	Julio Cayulla.
* ================================================================================================
* Modificaciones
* Motivo						Fecha		Nombre				Descripcion
* ================================================================================================
*
*/
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.primefaces.context.RequestContext;

import pe.gob.osce.sirenas.model.AuditoriaDTO;
import pe.gob.osce.sirenas.model.FichaArbitralDTO;
import pe.gob.osce.sirenas.model.NotificacionesDTO;
import pe.gob.osce.sirenas.svc.RegistrarNotificacionServiceLocal;
import pe.gob.osce.sirenas.wd.util.ConstanteWeb;
import pe.gob.osce.sirenas.wd.util.RepositorioDatos;
import pe.gob.osce.sirenas.wd.util.UBaseManage;

@ManagedBean(name="bandejaNotificacionBean")
@SessionScoped
public class BandejaNotificacionBean extends UBaseManage implements Serializable{


	/**
	 * 
	 */
	private static final long serialVersionUID = -1258602015271792234L;
	
	
	@EJB
	private	RegistrarNotificacionServiceLocal	registrarNotificacionService;


	/**
	 * Resumen.	Metodo que iniciliza la bandeja de evaluacion de quejas
	 * @return cadena mapeada para la navegacion, tipo String.
	 */
	private NotificacionesDTO notificaciones;
	private List<NotificacionesDTO> listNotificaciones;
	private FichaArbitralDTO fichaArbitral;
	private RepositorioDatos repositorio;
	
	private Boolean btnLeido;
	private Boolean btnNoLeido;
	private RequestContext context;
	
	
	public String verBandejaNotificacion() {
		System.out.println("Iniciacion verBandejaNotificacion");
		establecerObjetoSession(ConstanteWeb.IND_CARGAR_LISTAS, false);
		
		this.listNotificaciones= new ArrayList<NotificacionesDTO>();
		this.notificaciones= new NotificacionesDTO();
		
		repositorio=obtenerRepositorioDatos();
		fichaArbitral=(FichaArbitralDTO)obtenerObjetoSession(ConstanteWeb.FICHA_REGISTRO); 		
		listarNotificacion();
		
		return "verBandejaNotificacion";
	}
	

	private void validarLecturaNotificacion(boolean indLectura){
		if(indLectura)
		{
			this.btnLeido=true;
			this.btnNoLeido=false;
		}
		else
		{
			this.btnLeido=false;
			this.btnNoLeido=true;
		}
	}

	
	
	private void listarNotificacion(){
		
		try {
			
			this.listNotificaciones= new ArrayList<NotificacionesDTO>();
			this.listNotificaciones=registrarNotificacionService.consultarNotificacion(this.fichaArbitral.getIdFicha());
			for (NotificacionesDTO notificacionesDTO : listNotificaciones) {
				SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aaa");
	               String horaCadena = sdf.format(notificacionesDTO.getAuditoriaDTO().getFecRegistro());
				notificacionesDTO.setHoraRegistro(horaCadena);	
			}
			
		} catch (Exception e) {
			this.listNotificaciones= new ArrayList<NotificacionesDTO>();
		}
	}
	
	public void mostrarNotificacionPopup(Long idNotificacion){
		AuditoriaDTO auditoria=(AuditoriaDTO)obtenerObjetoSession(ConstanteWeb.AUDITORIA);
		try {
			
			this.notificaciones=new NotificacionesDTO();
			for (NotificacionesDTO notificacionesDTO : listNotificaciones) {
				
				if(notificacionesDTO.getIdNotificacion().longValue()==idNotificacion.longValue())
				{
					if(notificacionesDTO.isIndLectura()==false)
					{
						notificacionesDTO.setIndLectura(true);
						registrarNotificacionService.actualizarNotificacion(notificacionesDTO, auditoria);
					}					
					this.notificaciones=notificacionesDTO;
					break;
				}
			}
			
			listarNotificacion();
			
		} catch (Exception e) {		
			this.notificaciones=new NotificacionesDTO();
		}
	}
	
	
	
	public void salirNotificacionesPopup(){
		context = RequestContext.getCurrentInstance();
		context.execute("PF('dialogNotificacion').hide();");
	}
	
	
	
	
	
	
	public FichaArbitralDTO getFichaArbitral() {
		return fichaArbitral;
	}





	public void setFichaArbitral(FichaArbitralDTO fichaArbitral) {
		this.fichaArbitral = fichaArbitral;
	}





	public NotificacionesDTO getNotificaciones() {
		return notificaciones;
	}
	public void setNotificaciones(NotificacionesDTO notificaciones) {
		this.notificaciones = notificaciones;
	}
	public List<NotificacionesDTO> getListNotificaciones() {
		return listNotificaciones;
	}
	public void setListNotificaciones(List<NotificacionesDTO> listNotificaciones) {
		this.listNotificaciones = listNotificaciones;
	}





	public Boolean getBtnLeido() {
		return btnLeido;
	}





	public void setBtnLeido(Boolean btnLeido) {
		this.btnLeido = btnLeido;
	}
	public Boolean getBtnNoLeido() {
		return btnNoLeido;
	}	public void setBtnNoLeido(Boolean btnNoLeido) {
		this.btnNoLeido = btnNoLeido;
	}
	
	
	
	
	
}
